<?php
// 启动：`php -S localhost:8080 router.php`
// https://stackoverflow.com/a/38926070/2603230
// 该文件仅用于本地开发和测试，不应该放在正式服务器上。

chdir(__DIR__);
$filePath = realpath(ltrim($_SERVER["REQUEST_URI"], '/'));
if ($filePath && is_dir($filePath)) {
	// attempt to find an index file
	foreach (['index.php', 'index.html'] as $indexFile) {
		if ($filePath = realpath($filePath . DIRECTORY_SEPARATOR . $indexFile)) {
			break;
		}
	}
}
if ($filePath && is_file($filePath)) {
	// 1. check that file is not outside of this directory for security
	// 2. check for circular reference to router.php
	// 3. don't serve dotfiles
	if (
		strpos($filePath, __DIR__ . DIRECTORY_SEPARATOR) === 0 &&
		$filePath != __DIR__ . DIRECTORY_SEPARATOR . 'router.php' &&
		substr(basename($filePath), 0, 1) != '.'
	) {
		if (strtolower(substr($filePath, -4)) == '.php') {
			// php file; serve through interpreter
			include $filePath;
		} else {
			// asset file; serve from filesystem
			return false;
		}
	} else {
		// disallowed file
		header("HTTP/1.1 404 Not Found");
		echo "404 Not Found";
	}
} else {
	// rewrite to our index file
	include __DIR__ . DIRECTORY_SEPARATOR . 'index.php';
}
